/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model.factory;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.Persistence;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import model.funcionario.RepositorioFuncionario;
import model.cliente.RepositorioCliente;
import model.estoque.RepositorioEstoque;
import model.fornecedor.RepositorioFornecedor;
import model.produto.RepositorioProduto;
import model.encomendaproduto.RepositorioEncomendaProduto;
import model.perfil.RepositorioPerfil;
import model.vendavista.RepositorioVendaVista;

/**
 *
 * @author Marcos
 */
public class Factory {

    private static EntityManager manager = null;
    private static EntityManagerFactory factory = null;
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Factory.class.getName()).log(Level.SEVERE, null, ex);
        }
        factory = Persistence.createEntityManagerFactory("sistemavendasPU");
        if (manager == null || !manager.isOpen()) {
            manager = factory.createEntityManager();
        }
    }

    public static RepositorioFuncionario getFuncionarioDAO() {
        RepositorioFuncionario rep = new RepositorioFuncionario();
        rep.setManager(manager);
        return rep;
    }

    public static RepositorioCliente getClienteDAO() {
        RepositorioCliente rep = new RepositorioCliente();
        rep.setManager(manager);
        return rep;
    }

    public static RepositorioEstoque getEstoqueDAO() {
        RepositorioEstoque rep = new RepositorioEstoque();
        rep.setManager(manager);
        return rep;
    }

    public static RepositorioFornecedor getFornecedorDAO() {
        RepositorioFornecedor rep = new RepositorioFornecedor();
        rep.setManager(manager);
        return rep;
    }

    public static RepositorioProduto getProdutoDAO() {
        RepositorioProduto rep = new RepositorioProduto();
        rep.setManager(manager);
        return rep;
    }

    public static RepositorioEncomendaProduto getEncomendaDAO() {
        RepositorioEncomendaProduto rep = new RepositorioEncomendaProduto();
        rep.setManager(manager);
        return rep;
    }

    public static RepositorioPerfil getPerfilDAO() {
        RepositorioPerfil rep = new RepositorioPerfil();
        rep.setManager(manager);
        return rep;
    }

    public static RepositorioVendaVista getVendaVistaDAO() {
        RepositorioVendaVista rep = new RepositorioVendaVista();
        rep.setManager(manager);
        return rep;
    }
}
